import Vue from 'vue'
import Vuex from 'vuex'

import axios from 'axios'

// 使用插件
Vue.use(Vuex)

// 1.0 状态存储
const state = {}

// 2.0 actions - 写业务的
const actions = {
  getMovies() {
    // 虽然功能设计上，有些多余，但是确实能封装一个异步的操作
    // return new Promise((resolve, reject) => {
    //   axios('/static/movies.json')
    //     .then((res) => {
    //       resolve(res.data)
    //     })
    //     .catch((res) => {
    //       reject(new Error('请求不到地址'))
    //     })
    // })
    return new Promise((resolve, reject) => {
      setTimeout(function () {
        resolve('成功了')
      }, 2000)
    })
  }
}

// 3.0 mutations - 只有它有条件和能力对state进行操作
const mutations = {
  // 所以一般不会给 mutations 去写业务
  GET_MOVIE() {
    setTimeout(function () {
      console.log(100)
    }, 2000)
    // 虽然功能设计上，有些多余，但是确实能封装一个异步的操作
    // return new Promise((resolve, reject) => {
    //   axios('/static/movies.json')
    //     .then((res) => {
    //       resolve(res.data)
    //     })
    //     .catch((res) => {
    //       reject(new Error('请求不到地址'))
    //     })
    // })
    // return new Promise((resolve, reject) => {
    //   setTimeout(function () {
    //     resolve('成功了')
    //   }, 2000)
    // })
  }
}

// 导出实例
export default new Vuex.Store({
  // 存储所有需要共享的数据
  state,
  actions,
  mutations
})
